Dyno (アプリコンテナ)
最終更新日 2025年01月23日(木)
Dyno は、アプリケーションに安全でスケーラブルなコンピューティングを提供する Heroku 管理の Linux コンテナです。すべての Heroku アプリケーションは Dyno 上で実行されます。
ユースケース
各 Dyno には、さまざまなユースケースに対応する次のいずれかの設定を行うことができます。
- Web Dyno は、アプリケーションコードが実行されるコンテナです。受信した HTTP リクエストを処理し、応答を返します。これらを使用して、Web アプリケーション、API サービス、マイクロサービスなどを実行します。
- Worker Dyno は通常、バックグラウンドジョブ、キューイングシステム、タイムドジョブの実行に使用されます。アプリケーションで複数の種類の Worker dyno を使うことができます。
- One-off Dyno は単独で、または入力/出力をローカルのターミナルに接続して実行できる一時的な Dyno です。データベース移行やコンソールセッションなどの管理タスクの処理に使用します。Heroku Scheduler と同様に、不定期のバックグラウンド処理の実行にも使用できます。
Procfile で Dyno のプロセスタイプを指定できます。
利点
管理
Heroku の Dyno Manager は Dyno を自動的に実行し続けます。通常、アプリの操作は手間がかからずメンテナンスも不要です。Common Runtime にはリージョンあたり 1 つの Dyno Manager があり、リージョンで実行されているすべての顧客について Dyno の管理を担当します。Private Spaces Runtime には、スペースごとに専用の Dyno Manager があります。各 Dyno Manager は、そのスペース内で実行される Dyno のみを管理します。
スケーラブル
Heroku では、Dyno のサイズと数を調整することでアプリを拡張できます。
メモリとコンピューティングのニーズに合わせて Dyno のサイズを変更することで、アプリを垂直方向に拡張できます。詳細は、「dyno の選択に関するガイダンス」を参照してください。
Dyno の数を変更すると、水平方向にスケーリングできます。たとえば、dyno を追加すると、より多くの並列 HTTP リクエストを処理できるため、より大量のトラフィックを処理できます。水平方向のスケーリングは、Eco Dyno および Basic Dyno では使用できません。詳細は、「Dyno formation のスケーリング」を参照してください。
隔離されており安全
セキュリティ上の理由から、すべての dyno はそれぞれ強力に分離されています。Heroku は OS コンテナ化を使用し、アクセスを制限するために追加のカスタム強化機能を備えています。一部の Dyno 層には、専用のコンピューティングインスタンスまたはネットワークもあります。
複数のアーキテクチャの選択肢
[Heroku の次世代プラットフォームである Fir](generations#fir) の追加により、Dyno に 2 つの異なるアーキテクチャが提供されるようになりました。Fir では、Dyno は ARM ベースです。[Cedar](generations#cedar) では、Dyno は x86 ベースです。これら 2 つのアーキテクチャはアプリケーションのパフォーマンスに影響を与える可能性があり、特定のワークロードに適しています。 * ARM ベースのインスタンス: ARM プロセッサーは、データ処理、機械学習、高性能コンピューティングなどの計算集約型のワークロードで優れた性能を発揮します。これらは、特に ARM アーキテクチャの特定の長所を活用できるワークロードに対して、大幅なパフォーマンス上の利点をもたらします。 * x86 ベースのインスタンス: 一般的により成熟し、幅広くサポートされているソフトウェアエコシステムが提供され、特定のワークロードに役立ちます。ただし、多くの最新のワークロードでは、ARM ベースのインスタンスが同等またはそれ以上のパフォーマンスを提供できます。 Java および .NET ワークロードの場合、従来は x86 がこれらのワークロードの主要なアーキテクチャでしたが、最近の Java および .NET エコシステムの進歩により ARM との互換性が高まっています。ただし、アプリケーションとライブラリの ARM との具体的な互換性を確認することが重要です。機能のサポート
Git デプロイ
Heroku は、ポピュラーな VCS (バージョン管理システム) である Git でアプリのデプロイを管理します。Common Runtime では、Docker image を使用するアプリのデプロイもサポートしています。
ベースイメージの自動更新
Heroku は、OS パッチ適用などの変更に合わせて、公式にサポートされているベースイメージを自動的に更新します。ほとんどのアプリは、Dyno が再起動すると自動的に更新を取得します。Docker を使用するアプリのみが、更新を取得するために Docker image を再構築する必要があります。詳細は、ベースイメージの更新ポリシーを参照してください。
言語バージョンのサポートの更新
Heroku は、新しい言語バージョンが利用可能になるとすぐにそれをサポートするために、定期的かつタイムリーなアップデートを提供します。現在サポートされているバージョンを確認するには、Changelog の受信登録を行うか、各言語のサポートドキュメントを確認してください。
無料 SSL および Automated Certificate Management
Heroku SSL は、すべての Heroku アプリで SSL を有効にする機能の組み合わせです。Heroku SSL では、広くサポートされている TLS プロトコルの拡張機能である Server Name Indication (SNI) を使用します。Heroku の Automated Certificate Management (ACM) 機能を使用することも、独自の証明書を手動でアップロードすることもできます。
カスタムドメインサポート
すべての Heroku アプリにカスタムドメインを追加できます。
ログ記録
Heroku は実行中プロセス、システムコンポーネント、およびバッキングサービスすべての出力ストリームからアプリのログを収集します。Dyno によって出力されたログラインは特定の形式で表示され、特定の Dyno でログをフィルター処理することができます。
一時的なファイルシステム
各 dyno には、最も最近デプロイされたコードの新しいコピーが含まれる、独自の一時的なファイルシステムがあります。Dyno の存続期間中、実行中のプロセスはファイルシステムを一時的なスクラッチパッドとして使用できますが、書き込まれたファイルは他の dyno プロセスでは表示されません。書き込まれたファイルはすべて、自動再起動を含め Dyno が停止または再起動した時点で破棄されます。
追加機能
Heroku では多数の異なる Dynoサイズを提供しており、それぞれに一連の独自のプロパティとパフォーマンス特性が備わっています。メトリクス、オートスケール、Preboot、ローリングデプロイなど、特定の機能は特定の層の Dyno で利用できます。専用のコンピューティングリソース、専用のネットワーク、または HIPAA 準拠を備えた Dyno を選択することもできます。詳細は、「Dyno 層」と「Dyno サイズ別の技術仕様」参照してください。
価格と請求
Performance dynoへのアクセスは、確立された支払履歴を持つ顧客に限定されています。Private dyno と Shield dyno は、Private Spaces と Shield Spaces でのみ使用できます。
Eco dyno プランを除き、Heroku では使用時間に基づいて dyno の料金が発生します。詳細は、dyno の使用時間とコストを参照してください。アプリに適した Dyno サイズを選択するためのヒントについては、「dyno の選択に関するガイダンス」を参照してください。